In April of 2014, an extremely severe security vulnerability that is referred to as “heartbleed” was found in the Open Secure Sockets Layer (OpenSSL) protocol, which is widely used for public key authentication and data encryption on the Internet. This vulnerability is identified as CVE-2014-0160. The vulnerability is caused because boundary detection is not performed during processing of heartbeat (heartbeat) extension in the Transport Layer Security (Transport Layer Security, TLS) protocol supported by the OpenSSL protocol. Consequently, an attacker can read up to 64 KB of data at will from memory leakage of client-server connection data. That is, without any privilege information or authentication, the attacker may read critical data from a server, including a private key of an X.509 certificate, a user name, a password, and the like. In the case of server private key leakage, installing security patches for server-related code is not sufficient to prevent damage that the leakage may cause. The leakage may put individuals and enterprises in a crisis in the future, and a series of measures such as reissuing a certification authority (Certificate Authority, CA) certificate, patching an application of a service provider, upgrading a browser of a user, and changing a password need to be taken to reduce potential losses.
One important reason why the “heartbleed” vulnerability has caused quite a stir is that OpenSSL is a cornerstone for secure data transmission on the Internet, and included private keys of certificates, user names, passwords, and the like are critical data in the cornerstone. It can be concluded that, leakage of critical data in some critical applications on a cloud computing platform not only brings security threats to the cloud computing platform itself, but also may endanger personal computers (Personal Computer, PC), mobile phones, and other devices, causing great irremediable economic losses. In a threat model with various increasingly powerful network attacks, viruses, and even malicious operating systems, zero-day (zero-day) vulnerabilities, and the like, how to improve security of critical data in a critical application on a cloud computing platform has become an urgent problem that needs to be resolved.
The prior art includes a solution. The method is mainly encrypted storage of critical data. This is a commonly used method, and encrypting critical data can increase a difficulty in stealing the critical data by an attacker, making the critical data obtained by the attacker unreadable.
However, encrypting critical data cannot completely prevent the critical data from being stolen. Because critical data needs to be accessed by normal logic of an application (for example, in OpenSSL, critical data needs to be decrypted with a key), if the critical data is encrypted, the critical data certainly needs to be decrypted at some particular moments, making plaintext data exposed in a memory. Moreover, because a key for encryption and decryption is stored in the memory, the key is also exposed to attack surfaces of attackers and malicious operating systems.